import router from '~/router'
import { getToken } from '~/utils/localStorage'
import { showMessage } from '~/utils/my-notification'
import store from './store'
import { firstRouter } from './utils/common'

// 全局前置守卫
router.beforeEach(async (to, from, next) => {

  const token = getToken()
  // 没有登录的话，强制跳转到登录页
  if(!token && to.path !== '/login') {
    showMessage('请先登录', 'error')
    return next({ path: '/login' })
  }

  // 防止重复登录
  if(token && to.path === '/login') {
    showMessage('请勿重复登录', 'error')
    return next({ path: from.path ? from.path : '/'})
  }

  // 如果用户登录了，自动获取用户信息，并存储到vuex中
  if(token) {
    await store.dispatch('getUserInfo')
    if(!firstRouter) {
      await store.dispatch('getMenu')
    }
  }

  // 如果用户登录了，并且是在首页的话，将路由指向第一个路由
  if(to.path === '/') {
    return next({ path: firstRouter.path })
  }

  next()
})
